/**
 * @Description:  数据库连接池
 * @author longfa liang
 * @date 2021/7/13
 */

module.exports = function (url) {
    const MongodbClient = require('mongodb').MongoClient
    /*该位置是验证链接 链接不成功会返回错误 */
    MongodbClient.connect(url, { useUnifiedTopology: true }, function (err, db) {
        if (err) {
            throw err
        } else {

            db.close()
        }


    })

    const GenericPool = require('generic-pool')
    console.log('connect to mongoServer ready', url)
    const factory = {
        create: function () {//创建链接
            return MongodbClient.connect(url, { useUnifiedTopology: true })
            //返回一个mongodb的client链接对象
        },
        destroy: function (client) {//销毁链接
            client.close()//关闭链接，这里需要注意，形参client就是上面我们创建的对象
        }
    }
    const opts = {
        max: 30,//最大链接数
        min: 5//最小。。
    }
    return GenericPool.createPool(factory, opts)//就是在这里创建链接池
}

